// pages/dailyperformance/records/records.js
import http from '../../../utils/request.js';

Page({
  data: {
    records: [],          // 业绩记录列表
    filteredRecords: [],  // 筛选后的记录列表
    templates: [],        // 用户模板列表
    selectedTemplateId: null, // 选中的模板ID
    selectedTemplateName: '', // 选中的模板名称
    isLoading: false,     // 是否正在加载
    page: 1,              // 当前页码
    size: 10,             // 每页条数
    total: 0,             // 总记录数
    hasMore: true         // 是否有更多记录
  },

  onLoad() {
    this.loadTemplates();
  },

  // 加载用户模板
  async loadTemplates() {
    try {
      wx.showLoading({ title: '加载中...' });
      const res = await http.get('/performance_templates');
      
      if (res.status === 'success') {
        this.setData({
          templates: res.data
        }, () => {
          // 模板加载完成后加载记录
          this.loadRecords();
        });
      } else {
        wx.showToast({ title: '加载模板失败', icon: 'none' });
      }
    } catch (error) {
      wx.showToast({ title: '网络错误', icon: 'none' });
    } finally {
      wx.hideLoading();
    }
  },

  // 加载业绩记录（关联模板名称）
  async loadRecords() {
    if (this.data.isLoading || !this.data.hasMore) return;
    
    this.setData({ isLoading: true });
    
    try {
      const { page, size, selectedTemplateId, templates } = this.data;
      const params = {
        page,
        size
      };
      
      // 添加模板筛选参数
      if (selectedTemplateId) {
        params.template_id = selectedTemplateId;
      }
      
      const res = await http.get('/performance_records', { params });
      
      if (res.status === 'success') {
        const { records, pagination } = res.data;
        
        // 为每条记录添加模板名称
        const enhancedRecords = records.map(record => {
          // 在模板列表中查找对应的模板
          const template = templates.find(t => t.template_id === record.template_id);
          return {
            ...record,
            template_name: template ? template.template_name : '未知模板'
          };
        });
        
        const newRecords = page === 1 ? enhancedRecords : [...this.data.records, ...enhancedRecords];
        
        // 更新筛选后的记录列表
        const filteredRecords = this.applyFilter(newRecords);
        
        this.setData({
          records: newRecords,
          filteredRecords,
          total: pagination.total,
          hasMore: pagination.page * pagination.size < pagination.total,
          isLoading: false
        });
      } else {
        wx.showToast({ title: res.message || '加载记录失败', icon: 'none' });
        this.setData({ isLoading: false });
      }
    } catch (error) {
      wx.showToast({ title: '网络错误', icon: 'none' });
      this.setData({ isLoading: false });
    }
  },
  
  // 应用筛选条件
  applyFilter(records) {
    const { selectedTemplateId } = this.data;
    
    if (!selectedTemplateId) {
      return records; // 没有筛选条件，返回所有记录
    }
    
    // 筛选出匹配模板的记录
    return records.filter(record => record.template_id == selectedTemplateId);
  },

  // 模板筛选变更
  onTemplateChange(e) {
    const index = e.detail.value;
    if (index >= 0 && this.data.templates[index]) {
      const template = this.data.templates[index];
      
      this.setData({
        selectedTemplateId: template.template_id,
        selectedTemplateName: template.template_name,
        page: 1,
        hasMore: true
      }, () => {
        // 应用筛选条件
        const filteredRecords = this.applyFilter(this.data.records);
        this.setData({ filteredRecords });
      });
    } else {
      // 当选择"全部"时
      this.setData({
        selectedTemplateId: null,
        selectedTemplateName: '',
        page: 1,
        hasMore: true
      }, () => {
        // 重置筛选
        this.setData({ filteredRecords: this.data.records });
      });
    }
  },

  // 重置筛选
  resetFilter() {
    this.setData({
      selectedTemplateId: null,
      selectedTemplateName: '',
      page: 1,
      hasMore: true
    }, () => {
      // 重置筛选
      this.setData({ filteredRecords: this.data.records });
    });
  },

  // 加载更多
  loadMore() {
    if (this.data.isLoading || !this.data.hasMore) return;
    
    this.setData({
      page: this.data.page + 1
    }, () => {
      this.loadRecords();
    });
  },

  // 返回上一页
  goBack() {
    wx.navigateBack();
  }
});